package main

import (
	"fmt"
	"math"
	"time"
)

//Area = length of shorter vertical line * distance between lines
// 面积 = 最短的垂线*距离线
// func maxArea(height []int) int {
// 	maxnumber := 0
// 	maxNumberIndex := 0
// 	maxArea := 0

// 	//先判断最长的的长度的情况
// 	if height[0] < height[(len(height)-1)] {
// 		maxArea = height[0] * (len(height) - 1)
// 	} else {
// 		maxArea = height[(len(height)-1)] * (len(height) - 1)
// 	}

// 	fmt.Println("maxArea", maxArea)

// 	//先找到最高的那个
// 	for i := 0; i < len(height); i++ {
// 		if height[i] > maxnumber {
// 			maxnumber = height[i]
// 			maxNumberIndex = i
// 		}
// 	}

// 	// 先找到大值的
// 	for i := 0; i < len(height); i++ {
// 		if i == maxNumberIndex {
// 			continue
// 		}
// 		legth := maxNumberIndex - i
// 		fmt.Println("legth", legth)
// 		area := height[i] * int(math.Abs(float64(legth)))
// 		// area := height[i] * int(math.Abs(-2))
// 		if area > maxArea {
// 			maxArea = area
// 		}

// 	}
// 	return maxArea
// }

func maxArea(height []int) int {
	area := 0
	maxArea := 0
	for i, j := 0, len(height)-1; i != j; {

		area = int(math.Min(float64(height[i]), float64(height[j]))) * (j - i)
		fmt.Println("area", area)
		if height[i] < height[j] {
			i++
		} else {
			j--
		}
		if area > maxArea {
			maxArea = area
		}
	}
	return maxArea
}

func main() {
	start := time.Now()
	height := []int{1, 8, 6, 2, 5, 4, 8, 3, 7}
	result := maxArea(height)
	cost := time.Since(start)
	fmt.Println("result:", result)
	fmt.Println(cost)

}
